package com.liu.email;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Session;
import javax.mail.internet.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Properties;

/**
 * @author liubo
 */
public class MimeMessageEmailUtil {

    /**
     * 1：标题及接发人中文需要处理
     *
     * @param info
     * @throws Exception
     */
    public static void sendMimeMessageEmail() throws Exception {
        // 环境
        Session session = Session.getDefaultInstance(new Properties());
        // 邮件
        MimeMessage msg = new MimeMessage(session);

        // 主题
        msg.setSubject("主题");
        // 发件人
        msg.setFrom(new InternetAddress("1299616634@qq.com"));

        // 整封邮件的MINE消息体 mixed带附件 related 正文 alternative 纯文本
        MimeMultipart msgMultipart = new MimeMultipart("mixed");
        // 设置邮件的MINE消息体
        msg.setContent(msgMultipart);

        /**
         * 正文
         */
        MimeBodyPart content = new MimeBodyPart();
        // 把正文，附件加入到 MINE消息体中
        msgMultipart.addBodyPart(content);
        // 正文（图片和文字部分）
        MimeMultipart bodyMultipart = new MimeMultipart("related");
        // 设置内容为正文
        content.setContent(bodyMultipart);
        // html代码部分
        MimeBodyPart htmlPart = new MimeBodyPart();
        // 正文添加图片和html代码
        bodyMultipart.addBodyPart(htmlPart);
        String textPart = "正文";
        // html代码
        htmlPart.setContent("<span style='color:red'>" + textPart + "</span>" ,
                "text/html;charset=utf-8");

        /**
         * 附件
         */
        MimeBodyPart attch = new MimeBodyPart();
        msgMultipart.addBodyPart(attch);
        // 把文件，添加到附件中
        // 数据源
        DataSource ds1 = new FileDataSource(new File("C:/Users/ydxx/Desktop/工作周报20191223.xls"));
        // 数据处理器
        DataHandler dh1 = new DataHandler(ds1);
        // 设置附件的数据
        attch.setDataHandler(dh1);
        // 设置附件的文件名
        attch.setFileName(MimeUtility.encodeText("设置附件的文件名") + ".xls");

        // 生成文件邮件
        msg.saveChanges();

        // 输出
        OutputStream os = new FileOutputStream("C:/Users/ydxx/Desktop/demo.eml");
        msg.writeTo(os);
        os.close();
    }
}
